package com.hmall.item.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hmall.common.dto.ItemDto;
import com.hmall.common.dto.PageResult;
import com.hmall.item.mapper.ItemMapper;
import com.hmall.item.pojo.Item;
import com.hmall.item.service.IItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.Date;


@Slf4j
@Service
public class ItemService extends ServiceImpl<ItemMapper, Item> implements IItemService {
    /**
     * 分页
     *
     * @param page
     * @param size
     * @return
     */
    @Override
    public PageResult list(Integer page, Integer size) {
        if (page == null) {
            page = 1;
        }
        if (size == null) {
            size = 50;
        }
        //查询份分页操作
        Page<Item> itemPage = new Page<>(page, size);
        //使用拉莫达表达式来根据时间倒序查询
        LambdaQueryWrapper<Item> wrapper = new LambdaQueryWrapper<>();
        wrapper.orderByAsc(Item::getCreateTime);//根据时间倒序查询
        itemPage = page(itemPage, wrapper);
        //封装数据
        PageResult pageResult = new PageResult();
        pageResult.setTotal(itemPage.getTotal());//获取总条数
        pageResult.setList(itemPage.getRecords());//获取当前页数据
        return pageResult;
    }

    /**
     * 新增商品
     *
     * @param dto
     */
    @Override
    public void saveItem(ItemDto dto) {
        //先把接受前端的实体类写出来
        Item item = new Item();
        //因为实体类的对应不一致要把ItemDto 复制到item
        //浅拷贝，使用Spring的工具类进行浅拷贝
        BeanUtils.copyProperties(dto, item);//将dto的属性传给item
        item.setPrice(item.getPrice() * 100);//前端传的是元所以要诚意100
        item.setUpdateTime(new Date());//设置更新时间为当前时间
        item.setCreateTime(new Date());//设置创建时间为最新
        save(item);//使用本地的save方法来保存新增的数据
    }


    /**
     * 根据id查询商品
     *
     * @param id
     */
    @Override
    public ItemDto getById(Long id) {
        ItemDto itemDto = new ItemDto();
        Long itemDtoId = itemDto.getId();
        if (itemDtoId != null) {
            return itemDto;
        } else {
            System.out.println("没有找到该对象");
        }
        return itemDto;

    }

    /**
     * 修改
     *
     * @param item
     */
    @Override
    public ItemDto update(Item item) {
        ItemDto itemDto = new ItemDto();
        BeanUtils.copyProperties(itemDto, item);
        this.updateById(item);
//删除以前的品牌
        LambdaQueryWrapper<ItemDto> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(ItemDto::getBrand, item.getBrand());
        //将id 重新赋值给品牌
        item.setId(item.getId());
        return itemDto;
    }

    /**
     * 删除
     *
     * @param id
     */
    @Override
    public void delete(Long id) {
        log.info("删除===>{}", id);
        ItemDto byId = this.getById(id);
        LambdaQueryWrapper<ItemDto> wrapper = new LambdaQueryWrapper();
        wrapper.eq(ItemDto::getId, id);//拿到id
    }

    /**
     * 改变上架下架
     */
    @Override
    public void staTus(Long id, Integer status) {
        ItemDto itemDto = this.getById(id);
        LambdaQueryWrapper<ItemDto> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(ItemDto::getStatus, itemDto.getStatus());
        if (itemDto.getStatus()==1){

        }
        itemDto.setStatus(itemDto.getStatus());
    }

}
